package com.hpe.springboot.springbootmybatis.service.impl;

import com.hpe.springboot.springbootmybatis.dao.UserDao;
import com.hpe.springboot.springbootmybatis.entity.User;
import com.hpe.springboot.springbootmybatis.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

/**
 * 用户业务逻辑接口实现类
 * @Transactional：事务管理器注解，它可以加到类上，也可以加到方法上
 * 如果加到方法（public）上，表示该类下所有方法都需要事务；如果加到方法上表示该
 * 方法需要事务。
 */
@Service
//@Transactional
public class UserServiceImpl implements UserService {
    @Resource
    private UserDao userDao;

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveOrUpdate(User user) {
        if (user.getId() == null) {
            try {
                userDao.saveUser(user);
            } catch (Exception e) {
                throw new RuntimeException("添加用户出错！" + e.getMessage());
            }
        } else {
            try {
                userDao.updateUser(user);
            } catch (Exception e) {
                throw new RuntimeException("修改用户出错！" + e.getMessage());
            }
        }
    }

    // 根据ID查询
    @Override
    public User getById(Integer id) {
        try {
            return userDao.findById(id);
        } catch (Exception e) {
            throw new RuntimeException("根据ID查询用户出错！" + e.getMessage());
        }
    }

    // 全查询
    @Override
    public List<User> list() {
        return userDao.findAll();
    }
}
